/**
 * Created by Hayabusa on 2021/8/2.
 */
/*创建服务器*/
//1.导入http模块
var http=require('http');
//2.导入fs模块
var fs=require('fs')
//3.导入url模块来处理参数
var url=require('url')
//4.post请求获取需要的模块
var querystring = require('querystring')
//创建web服务器
var server=http.createServer();
//留言板数据
var msgs = [
    {name: '张三', content: "你好我是张三", create_at: '2021-11-14 10:30:32'},
    {name: '李四', content: "你好我是李四", create_at: '2021-11-15 10:11:14'},
    {name: '王五', content: "你好我是王五", create_at: '2021-11-16 10:22:55'}
];
//监听请求
server.on('request',function (req,res) {
    res.setHeader('Context-Type','text/html;charset=utf-8');
    var currentUrl=req.url
    //请求/加载留言板列表
    //请求/add加载留言板添加
    //检测静态资源并响应(略难)
    //否则404
    if (currentUrl=='/'){
        //
        fs.readFile('./views/index.html','utf8',function (err,data) {
            if (err){
                res.end('404NOTfound')

            }
            else {
                var html1='';
                msgs.forEach(function (items) {
                    html1+=`<li class="list-group-item">${items.name}：${items.content} <span class="pull-right">${items.create_at}</span></li>`

                })


                var html=data.toString()
                html = html.replace('^_^', html1)
                res.end(html)
            }
        })


    }
    //页面里请求的是正确的css文件，这里获取到资源给响应出去。
    else if (currentUrl=='/add'){

        fs.readFile('./views/add.html','utf8',function (err,data) {
            if (err){
                res.end('404NOTfound')

            }else {
                res.write(data)
                res.end()
            }
        })

    }
    //添加留言操作
    else if (currentUrl.indexOf('/doadd')==0){
        //获取提交方式
        if (req.method=='POST'){

                //判断是否POST提交
                //明确：表单post提交的数据可能会非常大，所以分片获取
                //说明：data事件-数据传输中，end事件-数据传输完毕
                var postData = '';
            console.log(postData)
                //数据在传输中
                req.on('data', function (chunk) {
                    postData += chunk;

                });

                //数据传输完毕
                req.on('end', function () {
                    //通过querystring模块将字符串数据转化为对象
                    paramObj = querystring.parse(postData);

                    //1.获取提交数据
                    if (!paramObj.name || !paramObj.content) return response.end('404 Not Found.');
                    //2.追加
                    var d = new Date();
                    var date = d.getFullYear()+'-'+d.getMonth()+'-'+d.getDate()+' '+
                        d.getHours()+'-'+d.getMinutes()+'-'+d.getSeconds();
                    var msg = {'name': paramObj.name, 'content': paramObj.content, 'create_at': date}
                    console.log(paramObj.name)
                    msgs.push(msg);
                    //3.跳转
                    res.statusCode = 302;
                    res.setHeader('Location', '/');
                    res.end();
                });


        }else {
            //接受数据
            var paramObj=url.parse(req.url,true).query;
            console.log(paramObj)
            //入库
            var d = new Date();
            var date = d.getFullYear()+'-'+d.getMonth()+'-'+d.getDate()+' '+
                d.getHours()+'-'+d.getMinutes()+'-'+d.getSeconds();
            var msg={'name':paramObj.name,'content':paramObj.content,'create_at':date}
            msgs.push(msg)
            //跳转
            res.setHeader('Location','/')
            res.statusCode=302
            res.end();
        }




        // fs.readFile('./views/add.html','utf8',function (err,data) {
        //     if (err){
        //         res.end('404NOTfound')
        //
        //     }else {
        //         res.write(data)
        //         res.end()
        //     }
        // })

    }
    //页面里请求的是正确的css文件，这里获取到资源给响应出去。
    else if (currentUrl.indexOf('/public')==0||currentUrl.indexOf('/node_modules')==0){
        fs.readFile('.'+currentUrl,'utf8',function (err,data) {
            if (err){
                res.end('404NOTfound')

            }else {
                res.write(data)
                res.end()
            }
        })

    }
    else {
        fs.readFile('./views/404.html','utf8',function (err,data) {
            if (err){
                res.end('404NOTfound')

            }else {
                res.write(data)
                res.end()
            }
        })

    }


})
//启动成功，监听端口
server.listen(8080,function () {
    console.log('启动成功，访问:http://localhost:8080')
})